/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ch.hslu.dmg.model;

import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author zaoln
 */
@Entity
@Table(name = "Maschine")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Maschine.findAll", query = "SELECT m FROM Maschine m"),
    @NamedQuery(name = "Maschine.findByMachineid", query = "SELECT m FROM Maschine m WHERE m.machineid = :machineid"),
    @NamedQuery(name = "Maschine.findByBezeichnung", query = "SELECT m FROM Maschine m WHERE m.bezeichnung = :bezeichnung"),
    @NamedQuery(name = "Maschine.findByWartungsintervall", query = "SELECT m FROM Maschine m WHERE m.wartungsintervall = :wartungsintervall")})
public class Maschine implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Machine_id")
    private Long machineid;
    @Column(name = "Bezeichnung")
    private String bezeichnung;
    @Column(name = "Wartungsintervall")
    private Integer wartungsintervall;
    @JoinTable(name = "KannBedienen", joinColumns = {
        @JoinColumn(name = "Machine_id", referencedColumnName = "Machine_id")}, inverseJoinColumns = {
        @JoinColumn(name = "Mitarbeiter_id", referencedColumnName = "Mitarbeiter_id")})
    @ManyToMany
    private List<Mitarbeiter> mitarbeiterList;
    @OneToMany(mappedBy = "machineid")
    private List<Belegung> belegungList;
    @JoinColumn(name = "Mitarbeiter_id", referencedColumnName = "Mitarbeiter_id")
    @ManyToOne
    private Mitarbeiter mitarbeiterid;
    @OneToMany(mappedBy = "machineid")
    private List<Fertigung> fertigungList;

    public Maschine() {
    }

    public Maschine(Long machineid) {
        this.machineid = machineid;
    }

    public Long getMachineid() {
        return machineid;
    }

    public void setMachineid(Long machineid) {
        this.machineid = machineid;
    }

    public String getBezeichnung() {
        return bezeichnung;
    }

    public void setBezeichnung(String bezeichnung) {
        this.bezeichnung = bezeichnung;
    }

    public Integer getWartungsintervall() {
        return wartungsintervall;
    }

    public void setWartungsintervall(Integer wartungsintervall) {
        this.wartungsintervall = wartungsintervall;
    }

    @XmlTransient
    public List<Mitarbeiter> getMitarbeiterList() {
        return mitarbeiterList;
    }

    public void setMitarbeiterList(List<Mitarbeiter> mitarbeiterList) {
        this.mitarbeiterList = mitarbeiterList;
    }

    @XmlTransient
    public List<Belegung> getBelegungList() {
        return belegungList;
    }

    public void setBelegungList(List<Belegung> belegungList) {
        this.belegungList = belegungList;
    }

    public Mitarbeiter getMitarbeiterid() {
        return mitarbeiterid;
    }

    public void setMitarbeiterid(Mitarbeiter mitarbeiterid) {
        this.mitarbeiterid = mitarbeiterid;
    }

    @XmlTransient
    public List<Fertigung> getFertigungList() {
        return fertigungList;
    }

    public void setFertigungList(List<Fertigung> fertigungList) {
        this.fertigungList = fertigungList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (machineid != null ? machineid.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Maschine)) {
            return false;
        }
        Maschine other = (Maschine) object;
        if ((this.machineid == null && other.machineid != null) || (this.machineid != null && !this.machineid.equals(other.machineid))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "fp.Maschine[ machineid=" + machineid + " ]";
    }
    
}
